<?php

require_once 'Basic.php';

class VehicleInfo {
  
  private $idVeiculo;
  private $report;
  private $dbFail;
  private $inexistent;
  private $placa;
  
  public function __construct($idVeiculo) {
    $this->idVeiculo = $idVeiculo;
    $this->report = new Report();
    $this->dbFail = false;
    $this->inexistent = false;
    $this->placa = "[???]";
    $this->buildHtml();
  }
  
  private function buildHtml() {
    $db = new DBUtils();
    
    try {
      $db->connect();
      $db->runQuery("select * from DadosVeiculo where idVeiculo = ?", array($this->idVeiculo));
      
      $item = $db->getItem();
      if($item === null) {
        $this->inexistent = true;
        $db->close();
        return;
      }
      
      $reportData = new ReportItem("-");
      
      $this->placa = htmlentities($item->placa);
      
      $vencimentoSeguro = null;
      if($item->vencimentoSeguro !== null) {
        $vencimentoSeguro = $item->vencimentoSeguro->format("d/m/Y-H:i:s"); 
      }
      
      $reportData->addLine("Placa", $this->placa);
      $reportData->addLine("Kilometragem Inicial", $item->kilometragemInicial);
      $reportData->addLine("Kilometragem Atual", $item->kilometragemAtual);
      $reportData->addLine("Vencimento do Seguro", $vencimentoSeguro);
      $reportData->addLine("Ano do Veiculo", $item->ano);
      $reportData->addLine("Custo de Compra", adjustMoney($item->custoCompra));
      
      $reportData->addLine("Nome do Modelo", $item->nomeModelo);
      $reportData->addLine("Marca", $item->marca);
      $reportData->addLine("Categoria", $item->categoria);
      $reportData->addLine("Preço da Diária", adjustMoney($item->precoDiaria));
      $reportData->addLine("Preço por KM", adjustMoney($item->precoKm));
      $reportData->addLine("Tipo", $item->nomeTipoModelo);
      $reportData->addLine("Carga", $item->carga);
      $reportData->addLine("Lotação", $item->lotacao);
      
      $reportData->addLine("Filial", $item->nomeFilial);
      $reportData->addLink("Editar", StdForm::decoreHref("VehicleEdit.php?idVeiculo=" . $this->idVeiculo, StdForm::ACTION_VALUE_PRINT));
      $this->report->addItem($reportData);
      $db->close();
    }
    catch(DBError $e) {
      $this->dbFail = true;
    }
  }
  
  public function getHtml() {
    if($this->dbFail) {
      return "<p>Falha no banco de dados. O erro foi reportado.</p>";
    }
    else if($this->inexistent) {
      return "<p>O ve&iacute;culo que foi requisitado n&atilde;o existe.</p>";
    }
    else {
      return $this->report->getHtml();
    }
  }
  
  public function getPlaca() {
    return $this->placa;
  }
  
}

mustBe(isset($_GET["idVeiculo"]) && isLoggedAsEmployee());
$info = new VehicleInfo($_GET["idVeiculo"]);
$page = new Page("Dados do ve&iacute;culo - " . $info->getPlaca());
$page->addContent($info->getHtml());

echo $page->getHtml();
